package com.icinfo.cloud.provider.punish.api.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.util.ObjectUtils;

/**
 * 案件移送证件类型枚举
 *
 * @author zhengqiang
 */
@AllArgsConstructor
@Getter
public enum TransferCertTypeEnum {
    /**
     * 案件移送证件类型枚举
     */
    CBR("TWJM", "台湾居民通行证", "511", "台湾居民来往大陆通行证（多次有效）"),
    WZJCSFZ("WZJCSFZ", "武装警察身份证", "", ""),
    JRSFZ("JRSFZ", "军人身份证", "", ""),
    HKB("HKB", "户口本", "113", "户口簿"),
    SFZ("SFZ", "身份证", "111", "居民身份证"),
    GAJM("GAJM", "港澳居民通行证", "513", "往来港澳通行证"),
    HZ("HZ", "护照", "414", "普通护照"),
    WGRSFZ("WGRSFZ", "外国人居留身份证", "554", "外国人居留证或居留许可");


    /**
     * 编码(处罚)
     */
    private String cfCode;
    /**
     * 描述(处罚)
     */
    private String cfDes;
    /**
     * 编码(公安)
     */
    private String gaCode;
    /**
     * 描述(公安)
     */
    private String gaDes;

    /**
     * 描述：根据处罚code获取公安code
     *
     * @param code 编码(处罚)
     * @return 描述内容
     */
    public static String getGaCodeByCfCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (TransferCertTypeEnum e : TransferCertTypeEnum.values()) {
            if (code.equals(e.getCfCode())) {
                return e.getGaCode();
            }
        }
        return null;
    }

    /**
     * 描述：根据处罚code获取公安value
     *
     * @param code 编码(处罚)
     * @return 描述内容
     */
    public static String getGaValueByCfCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (TransferCertTypeEnum e : TransferCertTypeEnum.values()) {
            if (code.equals(e.getCfCode())) {
                return e.getGaDes();
            }
        }
        return null;
    }

    /**
     * 描述：校验code是否是合法枚举
     *
     * @param code 枚举code
     * @return boolean 是否合法枚举（true-是/false-否）
     */
    public static boolean isLegalEnumCode(String code) {
        boolean flag = false;
        for (TransferCertTypeEnum e : TransferCertTypeEnum.values()) {
            if (e.getCfCode().equalsIgnoreCase(code)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

}
